// payment.js
// 导入请求工具
const { get, post } = require('../../utils/request');
const app = getApp();

Page({
  data: {
    orderId: '', // 订单ID
    orderTime: '', // 订单时间
    amount: '', // 支付金额
    selectedPaymentMethod: 'wechat', // 选中的支付方式，默认微信支付
    loading: false, // 加载状态
    showResultModal: false, // 是否显示支付结果弹窗
    paymentSuccess: false, // 支付是否成功
    paymentMessage: '' // 支付结果消息
  },

  onLoad: function(options) {
    // 获取订单ID和支付金额
    if (options && options.id && options.amount) {
      this.setData({
        orderId: options.id,
        amount: parseFloat(options.amount).toFixed(2)
      });
      
      // 加载订单详情，获取订单时间
      this.loadOrderDetail();
    }
  },

  /**
   * 加载订单详情
   */
  loadOrderDetail: function() {
    this.setData({
      loading: true
    });

    get(`/api/orders/${this.data.orderId}/`)
      .then(res => {
        const order = res || {};
        
        // 设置订单时间，如果没有返回则使用当前时间
        let orderTime = '未知';
        if (order.create_time) {
          const date = new Date(order.create_time);
          orderTime = this.formatDate(date);
        } else {
          orderTime = this.formatDate(new Date());
        }
        
        this.setData({
          orderTime: orderTime,
          loading: false
        });
      })
      .catch(err => {
        console.error('加载订单详情失败', err);
        this.setData({
          loading: false,
          orderTime: this.formatDate(new Date()) // 使用当前时间作为默认值
        });
      });
  },

  /**
   * 格式化日期时间
   */
  formatDate: function(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const hours = String(date.getHours()).padStart(2, '0');
    const minutes = String(date.getMinutes()).padStart(2, '0');
    const seconds = String(date.getSeconds()).padStart(2, '0');
    
    return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
  },

  /**
   * 选择支付方式
   */
  selectPaymentMethod: function(e) {
    const method = e.currentTarget.dataset.method;
    this.setData({
      selectedPaymentMethod: method
    });
  },

  /**
   * 确认支付
   */
  confirmPayment: function() {
    this.setData({
      loading: true
    });

    // 构建支付参数
    const paymentData = {
      order_id: this.data.orderId,
      payment_method: this.data.selectedPaymentMethod,
      amount: this.data.amount
    };

    // 调用支付API
    post('/api/orders/pay/', paymentData)
      .then(res => {
        this.setData({
          loading: false
        });
        
        // 模拟支付处理
        // 在实际项目中，这里应该调用微信或支付宝的支付SDK
        
        // 模拟支付结果（80%成功率）
        const isSuccess = Math.random() < 0.8;
        
        this.setData({
          showResultModal: true,
          paymentSuccess: isSuccess,
          paymentMessage: isSuccess ? '支付成功，感谢您的购买' : '支付失败，请稍后重试'
        });
        
        // 如果支付成功，更新订单状态
        if (isSuccess) {
          this.updateOrderStatus();
        }
      })
      .catch(err => {
        console.error('发起支付失败', err);
        this.setData({
          loading: false,
          showResultModal: true,
          paymentSuccess: false,
          paymentMessage: '支付接口调用失败，请稍后重试'
        });
      });
  },

  /**
   * 更新订单状态
   */
  updateOrderStatus: function() {
    post('/api/orders/update_status/', {
      order_id: this.data.orderId,
      status: 'paid'
    })
      .then(() => {
        console.log('订单状态更新成功');
      })
      .catch(err => {
        console.error('更新订单状态失败', err);
        // 这里不显示错误提示，因为支付已经成功
        // 后台可能会有定时任务再次尝试更新订单状态
      });
  },

  /**
   * 关闭结果弹窗
   */
  closeResultModal: function() {
    this.setData({
      showResultModal: false
    });
  },

  /**
   * 查看订单详情
   */
  goOrderDetail: function() {
    this.setData({
      showResultModal: false
    });
    
    // 跳转到订单详情页面
    wx.navigateTo({
      url: `/pages/order/detail?id=${this.data.orderId}`
    });
  },

  /**
   * 重新支付
   */
  retryPayment: function() {
    this.setData({
      showResultModal: false
    });
    // 重新支付
    this.confirmPayment();
  },

  /**
   * 返回上一页
   */
  onUnload: function() {
    // 支付页面关闭时，如果订单已支付，通知首页更新订单状态
    if (this.data.paymentSuccess) {
      const pages = getCurrentPages();
      const indexPage = pages.find(page => page.route === 'pages/index/index');
      if (indexPage) {
        indexPage.refreshOrderStatus();
      }
    }
  }
});